GMP 调度模型回顾
在深入理解无缓冲 Channel 与 GMP 的协作之前,我们先回顾一下 Go 语言的 GMP 调度模型:
- G (Goroutine): 用户态轻量级线程,包含执行栈、状态信息等
- M (Machine): 操作系统线程,真正执行计算的载体
- P (Processor): 逻辑处理器,连接 G 和 M,管理本地 Goroutine 队列
无缓冲 Channel 的阻塞机制
无缓冲 Channel 的核心特性是同步性:发送和接收操作必须配对出现,这种特性使其与 GMP 调度器产生紧密的交互。
Channel 阻塞状态转换